import Vue from 'vue'
import Vuex from 'vuex'
import mutations from './mutations'
Vue.use(Vuex)

const state = {    //要设置的全局访问的state对象
	SupplierId: '',     //要设置的初始属性值
	accountNumber: '',
	hanSui: '',
	name: '',
	passWord: '',
	phone: '',
	scopeBusinessNames: '',
	tranType: '',
	username: '',
	showFooter:true,
	changeNumber:0,
	isLogin:false
}
// const getters = {    //实时监听state值的变化(最新状态)
// 	isShow(state){    //方法名随意，主要是来承载变化的showFooter的值
// 		return state.showFooter
// 	},
// 	getChangeNum(){
// 		return state.changeNumber
// 	}
// }
// 光有定义的state的初始值，不改变它不是我们想要的需求，接下来要说的就是mutations了，mutattions也是一个对象，这个对象里面可以放改变state的初始值的方法，具体的用法就是给里面的方法传入参数state或额外的参数,然后利用vue的双向数据驱动进行值的改变，同样的定义好之后也把这个mutations扔进Vuex.Store里面
// const mutations = {
// 	show(state){   //自定义改变state初始值的方法，这里面的参数除了state之外还可以再传额外的参数(变量或对象);
// 		state.showFooter = true
// 	},
// 	hide(state){
// 		state.showFooter = false
// 	},
// 	newNum(state,num){    //同上，这里面的参数除了state之外还传了需要增加的值num
// 		state.changeNumber += num
// 	}
// }
// 这时候你完全可以用 this.$store.commit('show') 或 this.$store.commit('hide') 以及 this.$store.commit('newNum',6) 在别的组件里面进行改变showfooter和changebleNum的值了，但这不是理想的改变值的方式；因为在 Vuex 中，mutations里面的方法 都是同步事务，意思就是说：比如这里的一个this.$store.commit('newNum',sum)方法,两个组件里用执行得到的值，每次都是一样的，这样肯定不是理想的需求


// 好在vuex官方API还提供了一个actions，这个actions也是个对象变量，最大的作用就是里面的Action方法 可以包含任意异步操作，这里面的方法是用来异步触发mutations里面的方法，actions里面自定义的函数接收一个context参数和要变化的形参，context与store实例具有相同的方法和属性，所以它可以执行context.commit(' '),然后也不要忘了把它也扔进Vuex.Store里面：
// const actions = {
// 	hideFooter(context){  //自定义触发mutations里函数的方法，context与store实例具有相同的方法和属性
// 		context.commit('hide')
// 	},
// 	showFooter(context){
// 		context.commit('show')
// 	},
// 	getNewNum(context,sum){
// 		context.commit('newNum',sum)
// 	}
// }
// 
export default new Vuex.Store({
	state,
	mutations,
})
